import java.util.ArrayList;
import java.util.Random;

public class Biblioteka {
    private int ksiazka=0;
    private boolean flaga=false;    //czy pisarz chce cos zmienic
    //lista czytelnikow, ktorzy aktualnie czytaja ksiazke
    private ArrayList<Czytelnik> lista = new ArrayList<Czytelnik>();

    //sprawdzamy czy jakis czytelnik czyta ksiazke
    public synchronized boolean czyKtosCzyta(){
        return lista.isEmpty();
    }

    //zwraca liczbe aktualnie czytajacych czytelnikow
    public synchronized int ileCzytelnikow(){
        return lista.size();
    }

    public synchronized void setFlag(boolean b){
        flaga = b;
        this.notifyAll();
    }

    //sprawdza czy jest jakis oczekujacy pisarz
    public synchronized boolean czyPisarz(){
        return flaga;
    }

    public synchronized void czytaj(){
        System.out.println("ksiazka: "+ksiazka);
    }

    public synchronized void zmien(){
        System.out.print("zmieniam ksiazke: "+ksiazka+"->");
        ksiazka = new Random().nextInt(100);
        System.out.println(ksiazka);
    }

    public synchronized void dodajCzytelnik(Czytelnik c){
        System.out.println("przychodzi "+c.getId());
        lista.add(c);
    }

    public synchronized void usunCzytelnik(Czytelnik c){
        System.out.println("wychodzi "+c.getId());
        lista.remove(c);
        this.notifyAll();
    }
}
